package com.cg.design.depthdesign.builder.builders;

import com.cg.design.depthdesign.builder.cars.CarType;
import com.cg.design.depthdesign.builder.components.Engine;
import com.cg.design.depthdesign.builder.components.GPSNavigator;
import com.cg.design.depthdesign.builder.components.Transmission;
import com.cg.design.depthdesign.builder.components.TripComputer;

/**
 * 通用生成器接口
 * <p>
 * 生成器接口声明了创建产品对象不同部件的方法。
 *
 * @program: LeetCode->Builder
 * @author: cg
 * @create: 2022-05-08 16:07
 **/
public interface Builder {

    /**
     *
     * @param type
     */
    void setCarType(CarType type);

    /**
     *
     * @param seats
     */
    void setSeats(int seats);

    /**
     *
     * @param engine
     */
    void setEngine(Engine engine);

    /**
     *
     * @param transmission
     */
    void setTransmission(Transmission transmission);

    /**
     *
     * @param tripComputer
     */
    void setTripComputer(TripComputer tripComputer);

    /**
     *
     * @param gpsNavigator
     */
    void setGPSNavigator(GPSNavigator gpsNavigator);

}
